package br.edu.fa7.especializao.extremeprograming.tuita.bean;

import javax.faces.application.FacesMessage;
import javax.faces.bean.ManagedBean;
import javax.faces.bean.ManagedProperty;
import javax.faces.context.FacesContext;
import javax.servlet.http.HttpSession;

import br.edu.fa7.especializao.extremeprograming.tuita.entity.Publicacao;
import br.edu.fa7.especializao.extremeprograming.tuita.entity.Tuiteiro;
import br.edu.fa7.especializao.extremeprograming.tuita.exception.ServiceException;
import br.edu.fa7.especializao.extremeprograming.tuita.service.PublicacaoService;

@ManagedBean(name = "tuiteiroHomeBean")
public class TuiteiroHomeBean {
	
	@ManagedProperty("#{publicacaoService}")
	private PublicacaoService publicacaoService;
	

	private Publicacao publicacao;
	private Tuiteiro tuiteiro;

	public Tuiteiro getTuiteiro() {
		return tuiteiro;
	}

	public void setTuiteiro(Tuiteiro tuiteiro) {
		this.tuiteiro = tuiteiro;
	}

	public TuiteiroHomeBean() {
		publicacao = new Publicacao();
		tuiteiro = new Tuiteiro();
		tuiteiro.setId(new Long(1));
		tuiteiro.setNome("Carlos Adolfo");
		tuiteiro.setUsuario("cardolfo");
		tuiteiro.setSenha("cardolfo");
		tuiteiro.setEmail("cardolfo@gmail.com");

		getSession().setAttribute("tuiteiroLogado", tuiteiro);

	}

	public Publicacao getPublicacao() {
		return publicacao;
	}

	public void setPublicacao(Publicacao publicacao) {
		this.publicacao = publicacao;
	}

	public String getMessage() {
		return "I'm alive!";
	}

	public void publicar() {
		try {
			tuiteiro = (Tuiteiro) getSession().getAttribute("tuiteiroLogado");
			publicacao.setTuiteiro(tuiteiro);			
			publicacaoService.salvar(publicacao);
		} catch (ServiceException e) {
			FacesContext.getCurrentInstance().addMessage(null,
					new FacesMessage(FacesMessage.SEVERITY_INFO,e.getMessage(),e.getStackTrace().toString()));
		}
	}

	private HttpSession getSession() {
		HttpSession session = (HttpSession) FacesContext.getCurrentInstance()
				.getExternalContext().getSession(true);
		return session;
	}
	
	public void setPublicacaoService(PublicacaoService publicacaoService) {
		this.publicacaoService = publicacaoService;
	}
}